Guava এর Optional ক্লাস মূলত null হ্যান্ডলিংকে আরও সুরক্ষিত ও সহজ করার জন্য ব্যবহৃত হয়। এটি ডেভেলপারদের nullPointerException এড়াতে সহায়তা করে। Optional এ বেশ কিছু মেথড রয়েছে, যেগুলোর মধ্যে orElse, orElseGet, এবং orElseThrow অন্যতম।
orElse মেথড
কী করে?
orElse মেথড একটি ডিফল্ট ভ্যালু প্রদান করে। যদি Optional এ কোনো মান না থাকে, তাহলে এটি সেই ডিফল্ট মান প্রদান করে।
সিনট্যাক্স
T orElse(T other);
উদাহরণ
import com.google.common.base.Optional;
public class OrElseExample {
public static void main(String[] args) {
Optional<String> optional = Optional.absent();
String result = optional.orElse("Default Value");
System.out.println(result); // আউটপুট: Default Value
optional = Optional.of("Hello, Guava!");
result = optional.orElse("Default Value");
System.out.println(result); // আউটপুট: Hello, Guava!
}
}
orElseGet মেথড
কী করে?
orElseGet মেথড একটি Supplier ব্যবহার করে ডিফল্ট মান সরবরাহ করে। এটি শুধুমাত্র তখনই এক্সিকিউট হয়, যখন Optional-এ কোনো মান উপস্থিত না থাকে।
সিনট্যাক্স
T orElseGet(Supplier<? extends T> supplier);
উদাহরণ
import com.google.common.base.Optional;
public class OrElseGetExample {
public static void main(String[] args) {
Optional<String> optional = Optional.absent();
String result = optional.orElseGet(() -> "Generated Value");
System.out.println(result); // আউটপুট: Generated Value
optional = Optional.of("Hello, Guava!");
result = optional.orElseGet(() -> "Generated Value");
System.out.println(result); // আউটপুট: Hello, Guava!
}
}
orElse বনাম orElseGet
orElseডিফল্ট মানটি সব সময় তৈরি করে, এমনকি সেটি ব্যবহৃত না হলেও।orElseGetডিফল্ট মানটি শুধুমাত্র প্রয়োজন হলে তৈরি করে।
orElseThrow মেথড
কী করে?
orElseThrow মেথড একটি Exception নিক্ষেপ করে, যদি Optional-এ কোনো মান উপস্থিত না থাকে।
সিনট্যাক্স
<T extends Throwable> T orElseThrow(Supplier<? extends T> exceptionSupplier) throws T;
উদাহরণ
import com.google.common.base.Optional;
public class OrElseThrowExample {
public static void main(String[] args) {
Optional<String> optional = Optional.absent();
try {
String result = optional.orElseThrow(() -> new IllegalArgumentException("No Value Present"));
System.out.println(result);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage()); // আউটপুট: No Value Present
}
optional = Optional.of("Hello, Guava!");
String result = optional.orElseThrow(() -> new IllegalArgumentException("No Value Present"));
System.out.println(result); // আউটপুট: Hello, Guava!
}
}
তুলনা: orElse, orElseGet, এবং orElseThrow
| মেথড | ব্যবহারের উদ্দেশ্য | যখন মান উপস্থিত নেই | যখন মান উপস্থিত আছে |
|---|---|---|---|
orElse | একটি ডিফল্ট মান প্রদান করে | ডিফল্ট মান ফেরত দেয় | মূল মান ফেরত দেয় |
orElseGet | একটি Supplier থেকে মান জেনারেট করে | মান জেনারেট করে | মূল মান ফেরত দেয় |
orElseThrow | একটি Exception নিক্ষেপ করে | Exception নিক্ষেপ করে | মূল মান ফেরত দেয় |
কখন কোনটি ব্যবহার করবেন?
orElse: যখন একটি স্থির ডিফল্ট মান প্রয়োজন।orElseGet: যখন ডিফল্ট মানটি তৈরির সময় ব্যয়বহুল বা ডায়নামিক।orElseThrow: যখন মান উপস্থিত না থাকলে একটি নির্দিষ্ট Exception নিক্ষেপ করতে চান।
Guava এর Optional মেথডগুলোর মাধ্যমে কোডে null handling আরও সুরক্ষিত এবং কার্যকর করা যায়। এগুলো clean coding practices বজায় রাখতে অত্যন্ত সহায়ক।
Read more